/**
 * canvas 一些基础工具
 */

 let C = {}

 // 获取鼠标在元素上的位置
 
 C.getOffSet = function (ele) {
     let mouse = { x: 0, y: 0 }
     ele.addEventListener('mousemove', function (e) {
         let { x, y, target } = C.eventWrapper(e);
         mouse.x = x
         mouse.y = y
         mouse.target = target
     })
     return mouse
 }
 
 // 坐标系转换

 C.eventWrapper = function (ev) {
     let { target, offsetX, offsetY } = ev
     return { x: offsetX, y: offsetY, target }
 }
 
 
 // 角度转弧度
 
 C.toRad = function (angle) {
     return angle * Math.PI / 180
 }
 
 // 弧度转角度
 
 C.toAngle = function (rad) {
     return 180 * rad / Math.PI
 }
 
 /**
  * 随机颜色生成器
  * @param {int} a default: 55, 随机颜色起始参数
  * @param {int} b default: 255 随机颜色最终参数
  * @param {int} alphaA default: 0, 随机透明度起始参数
  * @param {int} alphaB default: 1 随机透明度最终参数,
  * @param {Boolean} isLinear default: false 是否线性颜色, 如rgba(22,22,22, alpha), rgba(33,33,33,alpha)
  * @returns String
  */
 C.generateColor = function (a = 55, b = 255, alphaA = 0, alphaB = 1, isLinear=false) {
     if (Math.max(a, b) > 255 || Math.max(a, b) < 0) {
         console.error('请确保颜色生成器C.generateColor 的颜色参数在a,b 在0~255之间, 已使用0~255代替运行')
         a = 0
         b = 255
     }
     let  color = ''
     if(isLinear){
         let channel = this.generateCount(a, b, false)
        color =  `rgba(${channel},${channel},${channel},${this.generateCount(alphaA, alphaB)})`
     }
     else{
         color =  `rgba(${this.generateCount(a, b, false)},${this.generateCount(a, b, false)},${this.generateCount(a, b, false)},${this.generateCount(alphaA, alphaB)})`
     }
     return color
 }
 /**
  * 随机数生成器
  * @param {Number} a 随机数起点 
  * @param {Number} b 随机数最大值
  * @param {Boolean} isDecimal 是否有小数
  * @returns Numbeppr
  */
 C.generateCount = function (a, b, isDecimal = true) {
     return isDecimal ? Math.random() * Math.abs(a - b) + Math.min(a, b) : ~~(Math.random() * Math.abs(a - b) + Math.min(a, b))
 }
 
 export default {
     C
 }